home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-30 | 46.4 KB | 1,397 lines |
- | A vertical bar denotes changes since the last posting of the file.
- |
- | Current Posting Dated: 05-03-93
-
- PCBoard Programming Language
- Version 1.00
- ----------------------------
-
-
- PPL SOURCE SYNTAX
-
- Each line of a PPL source file may contain none, one, some or all
- of the following sections:
-
- [KEYWORD ][EXPR|VAR][,EXPR|VAR][;|'][COMMENT TEXT]
-
- KEYWORD - A PPL statement used to accomplish some task.
- EXPR - A PPL expressioin which may contain VARs, CONSTs,
- and/or FUNCs.
- VAR - A PPL variable with optional array subscript.
- CONST - A PPL constant.
- FUNC - A PPL function that returns a value.
- ; - Used to start a comment. Ignored by the compiler.
- ' - Used to start a comment. Ignored by the compiler.
- COMMENT - Comment text following the ; or '.
- Ignored by the compiler.
-
- If a line is blank or contains only a comment, it is skipped.
- If it contains a KEYWORD, that line is compiled into a tokenized
- format.
- If it doesn't contain a KEYWORD but some argument, it is assumed to
- be an assignement statement (LET).
-
-
- DATA TYPES
-
- PPL utilizes the following data types:
-
- BOOLEAN
- unsigned character (1 byte)
- 0 = FALSE, non-0 = TRUE
-
- DATE
- unsigned integer (2 bytes)
- PCBoard julian date (count of days since 1/1/1900)
-
- INTEGER
- signed long integer (4 bytes)
- -2,147,483,648 - +2,147,483,647
-
- MONEY
- signed long integer (4 bytes)
- -$21,474,836.48 - +$21,474,836.47
-
- STRING
- far character pointer (4 bytes)
- NULL is an empty string; non-NULL points to a string of some
- length less than or equal to 256
-
- TIME
- signed long integer (4 bytes)
- Count of seconds since midnight
-
- SYNTAX
- TYPE var[(dim[,dim[,dim]])][,var...]
-
- NOTES: Any type may be assigned to any other type. This is the
- simplest way to accomplish type conversion. BOOLEAN, DATE,
- INTEGER, MONEY and TIME are all integer types and may be
- assigned to each other. Assignment from a larger data type
- to a smaller data type automatically converts the data to a
- format suitable for the smaller data type. Conversion to
- and from STRINGs is dependent on the other data type.
- DATEs are imported/exported as "MM-DD-YY". TIMEs are
- imported/exported as "HH:MM:SS". MONEYs are imported/
- exported as "#.##" without embedded dollar signs or commas,
- and using as many characters as needed to the left of the
- decimal point. All variables must be declared before use.
-
-
- CONSTANTS
-
- PPL allows user defined constants in the following formats:
-
- $#.## - A MONEY constant (dollar sign followed by optional dollars
- followed by decimal point followed by cents; # = 0-9)
- #h - An INTEGER hexadecimal constant (# = 0-9 & A-F)
- #d - An INTEGER decimal constant (# = 0-9)
- #o - An INTEGER octal constant (# = 0-7)
- #b - An INTEGER binary constant (# = 0-1)
- # - An INTEGER constant (# = 0-9)
- "X" - A STRING constant (X = any displayable text)
- @X## - An INTEGER @X constant (# = 0-9 & A-F)
-
- The following predefined constant labels are also defined:
-
- AUTO = 2000h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (automatically press enter after 10 seconds of no user input)
-
- BELL = 800h
- Parameter passed to DISPTEXT statement
- (sound a bell when prompt displayed)
-
- DEFS = 0
- Parameter passed to various statements for default values
-
- ECHODOTS = 1h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (echo dots instead of user input)
-
- ERASELINE = 20h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (erase the current line when user presses enter)
-
- FALSE = 0
- BOOLEAN FALSE value
-
- FCL = 2
- Value passed to STARTDISP to force line counting display
-
- FIELDLEN = 2h
- Parameter passed to INPUTSTR and PROMPTSTR statements (displays
- parenthesis to show input field width if ANSI enabled)
-
- FNS = 1
- Value passed to STARTDISP to force non-stop display
-
- F_EXP = 2h
- Expired subscription access allowed flag for CONFFLAG and
- CONFUNFLAG
-
- F_MW = 10h
- Mail waiting flag for CONFFLAG and CONFUNFLAG
-
- F_REG = 1h
- Registered access allowed flag for CONFFLAG and CONFUNFLAG
-
- F_SEL = 4h
- Conference selected flag for CONFFLAG and CONFUNFLAG
-
- F_SYS = 8h
- Conference SysOp access flag for CONFFLAG and CONFUNFLAG
-
- GRAPH = 1h
- Parameter passed to DISPFILE statement to search for graphics
- specific files
-
- GUIDE = 4h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (displays parenthesis above current line if FIELDLEN used and
- ANSI not enabled)
-
- HIGHASCII = 1000h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (allow high ascii characters, regardless of current valid
- character set, if disable high ascii filter set to yes)
-
- LANG = 4h
- Parameter passed to DISPFILE statement to search for language
- specific files
-
- LFAFTER = 100h
- Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements
- (send an extra line feed after user presses enter)
-
- LFBEFORE = 80h
- Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements
- (send an extra line feed before prompt display)
-
- LOGIT = 8000h
- Parameter passed to DISPTEXT statement
- (log text to callers log)
-
- LOGITLEFT = 10000h
- Parameter passed to DISPTEXT statement
- (log text to callers log, forcing left justification)
-
- NC = 0
- Value passed to STARTDISP to not change display mode
-
- NEWLINE = 40h
- Parameter passed to INPUTSTR, PROMPTSTR and DISPTEXT statements
- (send a line feed after user presses enter)
-
- NOCLEAR = 400h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (don't clear field at first keypress regardless of ANSI)
-
- O_RD = 0
- Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in
- read only mode
-
- O_RW = 2
- Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in
- read and write mode
-
- O_WR = 1
- Parameter passed to FCREATE/FOPEN/FAPPEND to open a file in
- write only mode
-
- SEC = 2h
- Parameter passed to DISPFILE statement to search for security
- specific files
-
- STACKED = 10h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (allow semi-colons and spaces in addition to valid character
- set passed)
-
- S_DB = 3h
- Parameter passed to FCREATE/FOPEN/FAPPEND to deny read and
- write (both) access from other processes
-
- S_DN = 0h
- Parameter passed to FCREATE/FOPEN/FAPPEND to allow read and
- write (deny none) access from other processes
-
- S_DR = 1h
- Parameter passed to FCREATE/FOPEN/FAPPEND to deny read access
- from other processes
-
- S_DW = 2h
- Parameter passed to FCREATE/FOPEN/FAPPEND to deny write access
- from other processes
-
- TRUE = 1
- BOOLEAN TRUE value
-
- UPCASE = 8h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (force user input to upper case)
-
- WORDWRAP = 200h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (if user hits end of line, save the text at the end of the line
- for future use)
-
- YESNO = 4000h
- Parameter passed to INPUTSTR and PROMPTSTR statements
- (Only allow international yes/no responses)
-
-
- PREDEFINED VARIABLES
-
- PPL predefines the following variables for user record access:
-
- BOOLEAN U_CLS
- Clear screen between messages status
-
- BOOLEAN U_DEF79
- 79 column message editor default
-
- BOOLEAN U_EXPERT
- Users current expert status
-
- BOOLEAN U_FSE
- Users full screen editor default
-
- BOOLEAN U_FSEP
- Prompt for full screen editor status
-
- BOOLEAN U_LONGHDR
- 6 line vs 4 line message header status
-
- BOOLEAN U_SCROLL
- Scroll multi-screen message status
-
- DATE U_EXPDATE
- The users subscription expiration date
-
- DATE U_PWDEXP
- The date that the users password expires and must be changed
-
- INTEGER U_EXPSEC
- The users expired security level
-
- INTEGER U_PAGELEN
- The users page length
-
- INTEGER U_SEC
- The users security level
-
- STRING U_ADDR(5)
- The users address information (if the SysOp has enabled address
- recording)
- Subscript 0 = First street line
- 1 = Second street line
- 2 = City
- 3 = State
- 4 = Zip
- 5 = Country
-
- STRING U_ALIAS
- The users alias (if the SysOp has enabled alias use)
-
- STRING U_BDPHONE
- The users business/data phone number
-
- STRING U_CITY
- The users city/state information
-
- STRING U_CMNT1
- The users comment field
-
- STRING U_CMNT2
- The SysOps comment field
-
- STRING U_HVPHONE
- The users home/voice phone number
-
- STRING U_NOTES(4)
- Notes about the user (if the SysOp has enabled the note
- capability)
- Subscripts 0-4 hold lines 1-5
-
- STRING U_PWD
- The users password
-
- STRING U_TRANS
- The users default transfer protocol
-
- STRING U_VER
- The users verification string (if the SysOp has enabled user
- verification)
-
-
- EXPRESSION OPERATORS
-
- PPL allows the following operators to be used in expressions
- (lvalue and rvalue are simply the values to the left and right,
- respectively, of binary operators):
-
- ( - Start sub-expression (also allows [ or { to be used)
- ) - End sub-expression (also allows ] or } to be used)
- ^ - Raise lvalue to the power of rvalue
- * - Multiply lvalue by rvalue
- / - Divide lvalue by rvalue
- % - Remainder of lvalue divided by rvalue
- + - Add rvalue to lvalue
- - - Subtract rvalue from lvalue
- = - Is lvalue equal to rvalue (also allows ==)
- <> - Is lvalue not equal to rvalue (also allows != and ><)
- < - Is lvalue less than rvalue
- <= - Is lvalue less than or equal to rvalue (also allows =<)
- > - Is lvalue greater than rvalue
- >= - Is lvalue greater than or equal to rvalue (also allows =>)
- ! - Logical not of rvalue
- & - Logical and of lvalue with rvalue (also allows &&)
- | - Logical or of lvalue with rvalue (also allows ||)
-
-
- FUNCTIONS
-
- PPL allows the following functions, returning the specified type,
- with the specified arguments, to be used in an expression (some
- functions require no arguments, in which case the parenthesis are
- empty; if arguments are required, the arguments may all be
- expressions of any type, but will be converted to one of the
- following types prior to function evaluation: BEXP (BOOLEAN),
- DEXP (DATE), IEXP (INTEGER), MEXP (MONEY), SEXP (STRING),
- TEXP (TIME)):
-
- ABORT() (BOOLEAN)
- Returns a flag indicating whether or not the user aborted the
- display of data via ^K/^X or answering no to a MORE? prompt
-
- ABS(IEXP) (INTEGER)
- Returns the absolute value of IEXP
-
- AND(IEXP1,IEXP2) (INTEGER)
- Returns the bitwise and of two integer expressions
-
- ANSION() (BOOLEAN)
- Returns TRUE if the user has ANSI capabilities
-
- ASC(SEXP) (INTEGER)
- Returns the ASCII value (0-255) of the first character of SEXP
-
- B2W(IEXP1,IEXP2) (INTEGER)
- Returns a word built from two byte sized values by the formula:
- (IEXP1*0100h+IEXP2)
-
- CALLID() (STRING)
- Returns the caller ID string
-
- CALLNUM() (INTEGER)
- Returns the caller number of the current user.
-
- CARRIER() (INTEGER)
- Returns the carrier speed as reported by the modem to PCBoard
-
- CCTYPE(SEXP) (STRING)
- Returns the issuer of credit card number SEXP
-
- CDON() (BOOLEAN)
- Returns TRUE if the carrier detect signal is on
-
- CHR(IEXP) (STRING)
- Returns a single character long string of the character
- represented by ASCII code IEXP (0-255)
-
- CURCOLOR() (INTEGER)
- Returns the current color (0-255) in use by the ANSI driver
-
- CURCONF() (INTEGER)
- Returns the current conference number
-
- CURSEC() (INTEGER)
- Returns the users current security level
-
- DATE() (DATE)
- Returns todays date
-
- DAY(DEXP) (INTEGER)
- Returns the day of the month (1-31) of DEXP
-
- DBGLEVEL() (INTEGER)
- Returns the debug level in effect
-
- DEFCOLOR() (INTEGER)
- Returns the default color as specified in PCBSetup
-
- DOW(DEXP) (INTEGER)
- Returns the day of the week (0 = Sunday, 6 = Saturday) that
- DEXP fell on
-
- EXIST(SEXP) (BOOLEAN)
- Returns a boolean TRUE value if the file SEXP exists
-
- FERR(IEXP) (BOOLEAN)
- Returns TRUE if a file access error occurred on channel IEXP
- since the file was opened or FERR was last called
-
- FILEINF(SEXP,IEXP) (BOOLEAN, DATE, INTEGER, STRING and TIME)
- Returns a piece of information (specified by IEXP) about the
- file SEXP
- Valid values for IEXP: 1 = Return TRUE if file exists
- 2 = Return file date stamp
- 3 = Return file time stamp
- 4 = Return file size
- 5 = Return file attributes
- 01h = Read Only
- 02h = Hidden
- 04h = System
- 20h = Archive
- 6 = Return file drive
- 7 = Return file path
- 8 = Return file base name
- 9 = Return file extension
-
- FMTCC(SEXP) (STRING)
- Returns a formatted credit card number based on SEXP
-
- GETENV(SEXP) (STRING)
- Returns the value of the environment variable named by SEXP
-
- GETTOKEN() (STRING)
- Returns the next string token from a prior call to TOKENIZE
- (Same as the GETTOKEN statement but can be used in an
- expression without prior assignement to a variable)
-
- GETX() (INTEGER)
- Returns the current column (X position) of the cursor on the
- display
-
- GETY() (INTEGER)
- Returns the current row (Y position) of the cursor on the
- display
-
- GRAFMODE() (STRING)
- Returns a character indicating the users graphics status
- R = RIPscrip supported, G = ANSI graphics (color and
- positioning) supported, A = ANSI positioning (no color)
- supported, or N = No graphics (RIP or ANSI) supported
-
- HELPPATH() (STRING)
- Returns the path, as specified in PCBSetup, to the help files
-
- HOUR(TEXP) (INTEGER)
- Returns the hour of the day (0-23) of TEXP
-
- I2S(IEXP1,IEXP2) (STRING)
- Returns a string representing the integer value IEXP1 converted
- to base IEXP2
-
- INKEY() (STRING)
- Returns the next keypress as a single character long string, or
- a string with the name of the function or cursor control key
-
- INSTR(SEXP1,SEXP2) (INTEGER)
- Returns the position of SEXP2 in SEXP1 (1-LEN(SEXP1)) or 0 if
- SEXP2 not in SEXP1
-
- KINKEY() (STRING)
- Returns the next keypress from the BBS keyboard as a single
- character long string, or a string with the name of the
- function or cursor control key
-
- LANGEXT() (STRING)
- Returns the file extension for the users language selection
-
- LEFT(SEXP,IEXP) (STRING)
- Returns the left-most IEXP characters of SEXP
-
- LEN(SEXP) (INTEGER)
- Returns the length of SEXP
-
- LOGGEDON() (BOOLEAN)
- Returns TRUE if the user has already logged on to the BBS,
- FALSE otherwise
-
- LOWER(SEXP) (STRING)
- Returns a string of SEXP with all uppercase characters
- converted to lowercase characters
-
- LTRIM(SEXP1,SEXP2) (STRING)
- Returns a string of SEXP1 with the first character of SEXP2
- trimmed from the left
-
- MASK_ALNUM() (STRING)
- Returns a valid character mask for input statements of
- A through Z, a through z, and 0 through 9
-
- MASK_ALPHA() (STRING)
- Returns a valid character mask for input statements of
- A through Z and a through z
-
- MASK_ASCII() (STRING)
- Returns a valid character mask for input statements of
- space (" ") through tilde ("~")
-
- MASK_FILE() (STRING)
- Returns a valid character mask for input statements of
- file names
-
- MASK_NUM() (STRING)
- Returns a valid character mask for input statements of
- 0 through 9
-
- MASK_PATH() (STRING)
- Returns a valid character mask for input statements of
- path names
-
- MASK_PWD() (STRING)
- Returns a valid character mask for input statements of
- passwords
-
- MAXNODE() (INTEGER)
- Returns the maximum node possible with the current software
- (ie, /2 would return 2, /10 would return 10, etc)
-
- MGETBYTE() (INTEGER)
- Returns the value of the next byte from the modem (0-255) or -1
- if there are no bytes waiting for input
-
- MID(SEXP,IEXP1,IEXP2) (STRING)
- Returns a string from SEXP starting at the IEXP1 position of
- SEXP and containing IEXP2 characters of SEXP
-
- MIN(TEXP) (INTEGER)
- Returns the minute of the hour (0-59) of TEXP
-
- MINKEY() (STRING)
- Returns the next keypress from the remote caller as a single
- character long string, or a string with the name of the
- function or cursor control key
-
- MINLEFT() (INTEGER)
- Returns the current callers minutes left to use online
-
- MINON() (INTEGER)
- Returns the current callers minutes online so far this session
-
- MKADDR(IEXP1,IEXP2) (INTEGER)
- Returns a segment:offset address as a long integer built from
- two word sized values by the formula: (IEXP1*00010000h+IEXP2)
-
- MKDATE(IEXP1,IEXP2,IEXP3) (DATE)
- Returns a date with the year specified by IEXP1 (1900-2079),
- month specified by IEXP2 (1-12), and day specified by IEXP3
- (1-31).
-
- MODEM() (STRING)
- Returns the modem connect string as reported by the modem to
- PCBoard
-
- MONTH(DEXP) (INTEGER)
- Returns the month of the year (1-12) of DEXP
-
- NOCHAR() (STRING)
- Returns the current language no character
-
- NOT(IEXP) (INTEGER)
- Returns the bitwise complement (all bits inverted) of an
- integer expression
-
- ONLOCAL() (BOOLEAN)
- Returns TRUE if the user is on locally
-
- OR(IEXP1,IEXP2) (INTEGER)
- Returns the bitwise or of two integer expressions
-
- | PAGESTAT() (BOOLEAN)
- | Returns TRUE if the user has paged the SysOp (or PAGEON has
- | been issued), FALSE otherwise (or PAGEOFF has been issued)
-
- PCBDAT() (STRING)
- Returns a string with the path and file name of PCBOARD.DAT
-
- PCBNODE() (INTEGER)
- Returns the node number
-
- PEEKB(IEXP) (INTEGER)
- Returns a byte value (0-255) located at memory address IEXP
- (PEEK is a synonym)
-
- PEEKDW(IEXP) (INTEGER)
- Returns a signed integer value (-2147483648 - +2147483647)
- located at memory address IEXP
-
- PEEKW(IEXP) (INTEGER)
- Returns a word value (0-65535) located at memory address IEXP
-
- PPENAME() (STRING)
- Returns the name of the currently executing PPE file minus the
- path and extension
-
- PPEPATH() (STRING)
- Returns a string with the path (no file name) of the currently
- executing PPE file
-
- PSA(IEXP) (BOOLEAN)
- Returns TRUE if the feature specified by IEXP is enabled,
- FALSE if the feature specified by IEXP is disabled
- Valid values for IEXP: 1 = Alias Support Enabled
- 2 = Verify Support Enabled
- 3 = Address Support Enabled
- 4 = Password Support Enabled
- 5 = Statistics Support Enabled
- 6 = Notes Support Enabled
-
- RANDOM(IEXP) (INTEGER)
- Returns a random number between 0 and IEXP inclusive
-
- READLINE(SEXP,IEXP) (STRING)
- Read and return line number IEXP from file SEXP
-
- REGAH() (INTEGER)
- Returns the value of the AH register after a DOINTR statement
-
- REGAL() (INTEGER)
- Returns the value of the AL register after a DOINTR statement
-
- REGAX() (INTEGER)
- Returns the value of the AX register after a DOINTR statement
-
- REGBH() (INTEGER)
- Returns the value of the BH register after a DOINTR statement
-
- REGBL() (INTEGER)
- Returns the value of the BL register after a DOINTR statement
-
- REGBX() (INTEGER)
- Returns the value of the BX register after a DOINTR statement
-
- REGCF() (BOOLEAN)
- Returns the state of the carry flag after a DOINTR statement
-
- REGCH() (INTEGER)
- Returns the value of the CH register after a DOINTR statement
-
- REGCL() (INTEGER)
- Returns the value of the CL register after a DOINTR statement
-
- REGCX() (INTEGER)
- Returns the value of the CX register after a DOINTR statement
-
- REGDH() (INTEGER)
- Returns the value of the DH register after a DOINTR statement
-
- REGDI() (INTEGER)
- Returns the value of the DI register after a DOINTR statement
-
- REGDL() (INTEGER)
- Returns the value of the DL register after a DOINTR statement
-
- REGDS() (INTEGER)
- Returns the value of the DS register after a DOINTR statement
-
- REGDX() (INTEGER)
- Returns the value of the DX register after a DOINTR statement
-
- REGES() (INTEGER)
- Returns the value of the ES register after a DOINTR statement
-
- REGF() (INTEGER)
- Returns the value of the flags register after a DOINTR
- statement
-
- REGSI() (INTEGER)
- Returns the value of the SI register after a DOINTR statement
-
- REPLACE(SEXP1,SEXP2,SEXP3) (STRING)
- Returns a string of SEXP1 with all occurences of the first
- character of SEXP2 replaced by the first character of SEXP3
-
- RIGHT(SEXP,IEXP) (STRING)
- Returns the right-most IEXP characters of SEXP
-
- RTRIM(SEXP1,SEXP2) (STRING)
- Returns a string of SEXP1 with the first character of SEXP2
- trimmed from the right
-
- S2I(SEXP,IEXP) (INTEGER)
- Returns an integer representing the string SEXP converted from
- base IEXP
-
- | SCRTEXT(IEXP1,IEXP2,IEXP3,BEXP) (STRING)
- | Returns a string with the text (and color information in the
- | form of @X codes if BEXP is TRUE) from column IEXP1, row IEXP2,
- | and of length IEXP3
-
- SEC(TEXP) (INTEGER)
- Returns the second of the minute (0-59) of TEXP
-
- | SHOWSTAT() (BOOLEAN)
- | Returns TRUE if writing to the display is active, FALSE if
- | writing to the display is disabled
-
- SLPATH() (STRING)
- Returns the path, as specified in PCBSetup, to the login
- security files
-
- SPACE(IEXP) (STRING)
- Returns a string of spaces IEXP characters long
-
- STRING(EXP) (STRING)
- Returns EXP converted to a string
-
- STRIP(SEXP1,SEXP2) (STRING)
- Returns a string of SEXP1 with all occurrences of the first
- character of SEXP2 removed
-
- STRIPATX(SEXP) (STRING)
- Returns a string of SEXP with all @X codes removed
-
- SYSOPSEC() (INTEGER)
- Returns the SysOp security defined in PCBOARD.DAT
-
- TEMPPATH() (STRING)
- Returns the path, as specified in PCBSetup, to the temporary
- work directory
-
- TIME() (TIME)
- Returns the current time
-
- TIMEAP(TEXP) (STRING)
- Returns a string representing the time TEXP in civilian format
- (XX:XX:XX AM)
-
- TOKCOUNT() (INTEGER)
- Returns the number of tokens available via the GETTOKEN
- statement and/or function
-
- TOKENSTR() (STRING)
- Returns a previously tokenized string reconstructed with
- semi-colons separating the component tokens
-
- TRIM(SEXP1,SEXP2) (STRING)
- Returns a string of SEXP1 with the first character of SEXP2
- trimmed from both ends
-
- UPPER(SEXP) (STRING)
- Returns a string of SEXP with all lowercase characters
- converted to uppercase characters
-
- UN_CITY() (STRING)
- Returns a nodes city from USERNET.XXX after a RDUNET statement
-
- UN_NAME() (STRING)
- Returns a nodes user name from USERNET.XXX after a RDUNET
- statement
-
- UN_OPER() (STRING)
- Returns a nodes operation text from USERNET.XXX after a RDUNET
- statement
-
- UN_STAT() (STRING)
- Returns a nodes status from USERNET.XXX after a RDUNET
- statement
-
- U_BDL() (INTEGER)
- Returns the current users number of bytes downloaded
-
- U_BDLDAY() (INTEGER)
- Returns the current users number of bytes downloaded today
-
- U_BUL() (INTEGER)
- Returns the current users number of bytes uploaded
-
- U_FDL() (INTEGER)
- Returns the current users number of files downloaded
-
- U_FUL() (INTEGER)
- Returns the current users number of files uploaded
-
- U_INCONF(IEXP1,IEXP2) (BOOLEAN)
- Returns TRUE if user record number IEXP2 is registered in
- conference IEXP1
-
- U_LDATE() (DATE)
- Returns the current users last date on the system
-
- U_LDIR() (DATE)
- Returns the current users last directory scan date
-
- U_LOGONS() (INTEGER)
- Returns the current users number of times logged on
-
- U_LTIME() (TIME)
- Returns the current users last time on the system
-
- U_MSGRD() (INTEGER)
- Returns the number of messages the user has read
-
- U_MSGWR() (INTEGER)
- Returns the number of messages the user has written
-
- U_NAME() (STRING)
- Returns the current users name
-
- U_PWDHIST(IEXP) (STRING)
- Returns the specified password from the password history
- Valid values for IEXP are 1 through 3
-
- U_PWDLC() (DATE)
- Returns the date of the last password change
-
- U_PWDTC() (INTEGER)
- Returns the number of times the password has been changed
-
- U_RECNUM(SEXP) (INTEGER)
- Returns the user record number (0-65535) for user name SEXP or
- -1 if SEXP is not registered on this system.
-
- U_STAT(IEXP) (DATE or INTEGER)
- Returns a statistic about the user that is tracked by PCBoard
- Valid values for IEXP are 1 through 15
- 1 - Returns the first date the user called the system
- 2 - Returns the number of SysOp pages the user has requested
- 3 - Returns the number of group chats the user has
- participated in
- 4 - Returns the number of comments the user has left
- 5 - Returns the number of 300 bps connects
- 6 - Returns the number of 1200 bps connects
- 7 - Returns the bumber of 2400 bps connects
- 8 - Returns the number of 9600 bps connects
- 9 - Returns the number of 14400 bps connects
- 10 - Returns the number of security violations
- 11 - Returns the number of "not registered in conference"
- warnings
- 12 - Returns the number of times the users download limit
- has been reached
- 13 - Returns the number of "file not found" warnings
- 14 - Returns the number of password errors the user has had
- 15 - Returns the number of verify errors the user has had
-
- U_TIMEON() (INTEGER)
- Returns the current users time online today in minutes
-
- VALCC(SEXP) (BOOLEAN)
- Returns TRUE if SEXP is a valid credit card number
-
- VALDATE(SEXP) (BOOLEAN)
- Returns TRUE if SEXP is in a valid date format
-
- VALTIME(SEXP) (BOOLEAN)
- Returns TRUE if SEXP is in a valid time format
-
- VER() (INTEGER)
- Returns the version number of PCBoard that is running
-
- XOR(IEXP1,IEXP2) (INTEGER)
- Returns the bitwise exclusive-or of two integer expressions
-
- YEAR(DEXP) (INTEGER)
- Returns the year (1900-2079) of DEXP
-
- YESCHAR() (STRING)
- Returns the current language yes character
-
-
- STATEMENTS
-
- PPL recognizes the following statements with the specified
- arguments to perform the specified operations (some statements
- require no arguments, in which case there is nothing following the
- statement; if arguments are required, they may be of two types,
- expression and variable; expression arguments may all be
- expressions of any type, but will be converted to one of the
- following types prior to function evaluation: BEXP (BOOLEAN),
- DEXP (DATE), IEXP (INTEGER), MEXP (MONEY), SEXP (STRING), TEXP
- (TIME); variable arguments (VAR) may be variables of any type, but
- may be converted to and from an appropriate type in order to
- accomplish the required statement):
-
- ADJTIME IEXP
- Add or subtract IEXP minutes to the users time available this
- session
-
- ANSIPOS IEXP1,IEXP2
- If ANSI is available, position the cursor in
- column IEXP1 row IEXP2
- Legal ranges: 1 <= IEXP1 <= 80
- 1 <= IEXP2 <= 23 (Because of the status lines)
- (1,1) is the top left corner of the screen
-
- BACKUP IEXP
- Backup (move the cursor to the left) IEXP columns without going
- past column 1
-
- BLT IEXP
- Display bulletin number IEXP
-
- BROADCAST IEXP1,IEXP2,SEXP
- Broadcast message SEXP to nodes from IEXP1 to IEXP2 inclusive
-
- BYE
- Same as having the user type BYE from the command prompt
-
- CALL SEXP
- Load and execute PPE filename specified by SEXP
-
- CDCHKOFF
- Turn off carrier detect checking
-
- CDCHKON
- Turn on carrier detect checking
-
- CHAT
- Initiate SysOp chat mode
-
- CLOSECAP
- Close the capture file previously opened with OPENCAP
-
- CLREOL
- Clear to the end of the line, with the current color if in ANSI
- mode
-
- CLS
- Clear the screen, with the current color if in ANSI mode
-
- COLOR IEXP
- Change the current color to IEXP
-
- CONFFLAG IEXP1,IEXP2
- Turn on the conference IEXP1 flags specified by IEXP2
-
- CONFUNFLAG IEXP1,IEXP2
- Turn off the conference IEXP1 flags specified by IEXP2
-
- DBGLEVEL IEXP
- Set the debug level to IEXP
-
- DEC VAR
- Decrement the value of VAR
-
- DEFCOLOR
- Resets the current color to the system default
-
- DELAY IEXP
- Pause for IEXP clock ticks
- (1 clock tick = approximately 1/18.2 second)
-
- DELETE SEXP
- Deletes the filename specified by SEXP (ERASE is a synonym)
-
- DELUSER
- Flags the current user record for deletion
-
- DIR SEXP
- Performs a file directory command, passing it SEXP as arguments
-
- DISPFILE SEXP,IEXP
- Display file SEXP with IEXP alternate file flags
- (valid flags = GRAPH, SEC, LANG)
-
- DISPSTR SEXP
- Display file if SEXP is "%filename", execute PPE if SEXP is
- "!filename", or display string SEXP
-
- DISPTEXT IEXP1,IEXP2
- Display PCBTEXT prompt IEXP1 using flags IEXP2
- (valid flags = NEWLINE, LFBEFORE, LFAFTER, BELL, LOGIT,
- LOGITLEFT)
-
- DOINTR IEXP1,IEXP2,IEXP3,IEXP4,IEXP5,IEXP6,IEXP7,IEXP8,IEXP9,IEXP10
- Generate interrupt number IEXP1 (0-255) with the following
- register values:
- AX = IEXP2
- BX = IEXP3
- CX = IEXP4
- DX = IEXP5
- SI = IEXP6
- DI = IEXP7
- FLAGS = IEXP8
- DS = IEXP9
- ES = IEXP10
-
- DTROFF
- Turn off the DTR signal
-
- DTRON
- Turn on the DTR signal
-
- END
- End PPE execution
-
- FAPPEND IEXP1,SEXP,IEXP2,IEXP3
- Use channel IEXP1 to open file SEXP in append mode with access
- mode IEXP2 and share mode IEXP3
- (valid channels = 0 - 7 [0 is used for script questionnaires])
- (valid access modes = O_RD, O_WR, O_RW [should use O_RW])
- (valid share modes = S_DN, S_DR, S_DW, S_DB)
-
- FCLOSE IEXP
- Close channel IEXP
-
- FCREATE IEXP1,SEXP,IEXP2,IEXP3
- Use channel IEXP1 to create and open file SEXP in access mode
- IEXP2 and share mode IEXP3
- (valid channels = 0 - 7 [0 is used for script questionnaires])
- (valid access modes = O_RD, O_WR, O_RW [should use O_WR])
- (valid share modes = S_DN, S_DR, S_DW, S_DB)
-
- FGET IEXP,VAR
- Read a line from channel IEXP and assign it to VAR
-
- FOPEN IEXP1,SEXP,IEXP2,IEXP3
- Use channel IEXP1 to open file SEXP in access mode IEXP2 and
- share mode IEXP3
- (valid channels = 0 - 7 [0 is used for script questionnaires])
- (valid access modes = O_RD, O_WR, O_RW)
- (valid share modes = S_DN, S_DR, S_DW, S_DB)
-
- FOR VAR = IEXP1 TO IEXP2 [STEP IEXP3]
- statement(s)
- NEXT
- FOR - Initializes a loop by assigning IEXP1 to VAR and
- continuing while VAR <= IEXP2 (if IEXP3 >= 0) or VAR >= IEXP2
- (if IEXP3 < 0) (TO is required to separate IEXP1 and IEXP2;
- if STEP (optional) is not specified IEXP3 defaults to 1)
- NEXT - Adds IEXP3 to VAR, transfers control to the closest FOR
- statement, and marks the end of the FOR loop (ENDFOR and END
- FOR are synonyms)
-
- FORWARD IEXP
- Move the cursor forward (to the right) IEXP columns without
- going past column 80
-
- FPUT IEXP,SEXP[,SEXP...]
- Write one or more SEXP out to channel IEXP
-
- FPUTLN IEXP[,SEXP[,SEXP...]]
- Write zero or more SEXP out to channel IEXP and terminate with
- a carriage return/line feed pair
-
- FPUTPAD IEXP1,SEXP,IEXP2
- Write out SEXP, padding or truncating to length IEXP2 as
- needed, to channel IEXP1
-
- FRESHLINE
- If the cursor is not in column 1, do a newline
-
- FREWIND IEXP
- Rewind channel IEXP after flushing buffers and committing the
- file to disk.
-
- GETTOKEN VAR
- Get a token from a previous call to tokenize and assign
- it to VAR
-
- GETUSER
- Fill the predefined variables (U_...) with current information
- from the user record
-
- GOSUB LABEL
- Transfer control to LABEL, marking the current PPE location for
- a future RETURN statement (GO SUB is a synonym)
-
- GOTO LABEL
- Transfer control to LABEL (GO TO is a synonym)
-
- GOODBYE
- Same as having the user type G from the command prompt
-
- HANGUP
- Hangup on the user without any notification
-
- IF (BEXP) statement ...
- Evaluate BEXP and, if true, execute statement; otherwise skip
- to the next statement
-
- IF (BEXP) THEN
- statement(s)
- ELSEIF (BEXP) THEN
- statement(s)
- ELSE
- statement(s)
- ENDIF
- IF - If expression cond is TRUE then this statement transfers
- control to the statement(s) following it, otherwise control
- is tranferred to the next ELSEIF, ELSE or ENDIF statement
- (requires THEN [or DO] after the condition)
- ELSEIF - (optional) If expression cond is TRUE then this
- statement transfers control to the statements following it,
- otherwise control is tranferred to the next ELSEIF, ELSE or
- ENDIF statement (There may be multiple ELSEIF statements
- between the IF and ELSE statements (ELSE IF is a synonym;
- nothing is required to come after the condition, although
- THEN [or DO] may appear for clarification and consistency in
- the source code)
- ELSE - (optional) Separates the false portion of an IF/ELSEIF
- statement from the true portion
- ENDIF - Ends an IF/ELSEIF/ELSE statement block (END IF is a
- synonym)
-
- INC VAR
- Increment the value of VAR
-
- INPUT SEXP,VAR
- Display SEXP and get input from user, assigning it to VAR
- (60 characters maximum)
-
- INPUTCC SEXP,VAR,IEXP
- Display SEXP in color IEXP and get a credit card formatted
- string from the user, assigning it to VAR
- (16 characters maximum, valid characters 0-9)
-
- INPUTDATE SEXP,VAR,IEXP
- Display SEXP in color IEXP and get a date formatted string from
- the user, assigning it to VAR
- (8 characters maximum, valid characters 0-9 - /)
-
- INPUTINT SEXP,VAR,IEXP
- Display SEXP in color IEXP and get an integer formatted string
- from the user, assigning it to VAR
- (11 characters maximum, valid characters 0-9)
-
- INPUTMONEY SEXP,VAR,IEXP
- Display SEXP in color IEXP and get a money formatted string
- from the user, assigning it to VAR
- (13 characters maximum, valid characters 0-9 $ .)
-
- INPUTSTR SEXP1,VAR,IEXP1,IEXP2,SEXP2,IEXP3
- Display SEXP1 in color IEXP1 and get a string (maximum length
- IEXP2, valid characters SEXP2, flags IEXP3) from the user,
- assigning it to VAR
- (valid length = 1-256)
- (valid characters = any string)
- (valid flags = ECHODOTS, FIELDLEN, GUIDE, UPCASE, STACKED,
- ERASELINE, NEWLINE, LFBEFORE, LFAFTER, WORDWRAP, NOCLEAR,
- HIGHASCII, AUTO, YESNO)
-
- INPUTTEXT SEXP,VAR,IEXP1,IEXP2
- Display SEXP in color IEXP1 and get a string (maximum length
- IEXP2) from the user, assigning it to VAR
-
- INPUTTIME SEXP,VAR,IEXP
- Display SEXP in color IEXP and get a time formatted string from
- the user, assigning it to VAR
- (8 characters maximum, valid characters 0-9 :)
-
- INPUTYN SEXP,VAR,IEXP
- Display SEXP in color IEXP and get a yes/no response from
- the user, assigning it to VAR
- (1 characters maximum, valid characters determined by language)
-
- JOIN SEXP
- Performs a join conference command, passing it SEXP as
- arguments
-
- KBDCHKOFF
- Turn off keyboard time out checking
-
- KBDCHKON
- Turn on keyboard time out checking
-
- KBDFILE SEXP
- Stuff the keyboard buffer with the contents of file SEXP
-
- KBDSTUFF SEXP
- Stuff the keyboard buffer with the contents of SEXP
-
- LET VAR = EXP
- Evaluate expression EXP, convert and assign to VAR
- (NOTE: LET is the only optional keyword. If no keyword is
- found, LET is assumed. There are certain circumstances where
- it may be required, such as assignment to a variable named the
- same as a statement (PRINT, for example, would require a line
- such as LET PRINT = TRUE instead of just PRINT = TRUE)
-
- LOG SEXP,BEXP
- Write string SEXP to the callers log, left justified if BEXP is
- TRUE
-
- MESSAGE IEXP,SEXP1,SEXP2,SEXP3,SEXP4,DEXP,BEXP1,BEXP2,SEXP5
- Write a message in conference IEXP, to user SEXP1 (empty string
- defaults to current caller), from user SEXP2 (empty string
- defaults to current caller), subject SEXP3, security in SEXP4
- (N or R; N is the default), pack out date in DEXP (0 for no
- pack out date), BEXP1 TRUE if return receipt desired, BEXP2
- TRUE if message should be echoed, and SEXP5 is the filename to
- use for the message text
-
- MORE
- Displays a MORE? prompt
-
- MPRINT SEXP[,SEXP...]
- Display one or more string expressions on the callers screen
- only (this statement does not send anything to the BBS screen)
-
- MPRINTLN [SEXP[,SEXP...]]
- Display zero or more string expressions on the callers screen
- only and follow with a newline (this statement does not send
- anything to the BBS screen)
-
- NEWLINE
- Write a newline to the display
-
- NEWLINES IEXP
- Write IEXP newlines to the display
-
- OPENCAP SEXP,VAR
- Open SEXP and capture all screen output to it. If an error
- occurs creating or opening SEXP, VAR is set to TRUE, otherwise
- VAR is set to FALSE.
-
- OPTEXT SEXP
- Writes string SEXP into the @OPTEXT@ macro
-
- | PAGEOFF
- | Turn off the SysOp paged indicator (flashing p on status line)
- |
- | PAGEON
- | Turn on the SysOp paged indicator (flashing p on status line)
-
- POKEB IEXP1,IEXP2
- Assign the value IEXP2 (0-255) to memory address IEXP1
- (POKE is a synonym)
-
- POKEDW IEXP1,IEXP2
- Assign the value IEXP2 (-2147483648 - +2147483647) to memory
- address IEXP1
-
- POKEW IEXP1,IEXP2
- Assign the value IEXP2 (0-65535) to memory address IEXP1
-
- POP VAR[,VAR...]
- Pop values (previously pushed onto the stack) into a list of
- variables
-
- PRINT SEXP[,SEXP...]
- Display one or more string expressions
-
- PRINTLN [SEXP[,SEXP...]]
- Display zero or more string expressions and follow with a
- newline
-
- PROMPTSTR IEXP1,VAR,IEXP2,SEXP,IEXP3
- Display PCBTEXT entry IEXP1 and get a string (maximum length
- IEXP2, valid characters SEXP, flags IEXP3) from the user,
- assigning it to VAR
- (valid length = 1-256)
- (valid characters = any string)
- (valid flags = ECHODOTS, FIELDLEN, GUIDE, UPCASE, STACKED,
- ERASELINE, NEWLINE, LFBEFORE, LFAFTER, WORDWRAP, NOCLEAR,
- HIGHASCII, AUTO, YESNO)
-
- PUSH EXP[,EXP...]
- Push a list of evaluated expressions onto the stack
-
- PUTUSER
- Write the information from the predefined variables (U_...) to
- the user record
-
- QUEST IEXP
- Do script questionnaire IEXP
-
- RDUNET IEXP
- Read information from USERNET.XXX for node IEXP
-
- RDUSYS
- Reads a USERS.SYS file, if present, and updates the users
- record
-
- RENAME SEXP1,SEXP2
- Rename file SEXP1 to SEXP2
-
- RESETDISP
- Reset the display after an user abort
-
- RESTSCRN
- Restore the screen from the buffer previously saved with
- SAVESCRN
-
- RETURN
- Return to the statement after the last GOSUB or, if no GOSUB is
- waiting for a RETURN, END the PPE
-
- SAVESCRN
- Save the current screen in a buffer for later restoration with
- the RESTSCRN
-
- SENDMODEM SEXP
- Send the text in SEXP out to the modem
-
- SHELL BEXP,VAR,SEXP1,SEXP2
- Shell (via COMMAND.COM if BEXP is TRUE) to program/command
- SEXP1 with arguments SEXP2, saving the return value in VAR
- (NOTE: If BEXP is TRUE, the value assigned to VAR will be the
- return code of COMMAND.COM, not SEXP1)
-
- | SHOWOFF
- | Turns off display of information to the screen
- |
- | SHOWON
- | Turns on display of information to the screen
-
- SOUND IEXP
- Turn on the BBS PC speaker at the frequency (1-65535) specified
- by IEXP (or turn it off if the frequency is 0)
-
- SPRINT SEXP[,SEXP...]
- Display one or more string expressions on the BBS screen only
- (this statement does not send anything to the modem)
-
- SPRINTLN [SEXP[,SEXP...]]
- Display zero or more string expressions on the BBS screen only
- and follow with a newline (this statement does not send
- anything to the modem)
-
- STARTDISP IEXP
- Start display monitoring in mode IEXP
- (valid modes = NC, FNS, FCL)
-
- STOP
- Abort PPE execution without appending answers (channel 0) to
- the answer file
-
- TOKENIZE SEXP
- Tokenize string SEXP into individual items separated by
- semi-colons or spaces
-
- VARADDR VAR1,VAR2
- Assign the address (segment and offset) of VAR1 to VAR2
-
- VAROFF VAR1,VAR2
- Assign the offset address of VAR1 to VAR2
-
- VARSEG VAR1,VAR2
- Assign the segment address of VAR1 to VAR2
-
- WAIT
- Displays a PRESS ENTER TO CONTINUE? prompt
-
- WAITFOR SEXP,VAR,IEXP
- Wait up to IEXP seconds for the string SEXP, assigned TRUE to
- VAR if the string is found in the time specified or FALSE if
- the string is not found (WAIT FOR is a synonym)
-
- WHILE (BEXP) statement ...
- While BEXP is true execute statement; when BEXP is false
- execute following statements
-
- WHILE (BEXP) DO
- statement(s)
- ENDWHILE
- WHILE - While BEXP is true execute statement(s); when BEXP is
- false transfer control to the first statement following the
- ENDWHILE statement (requires DO [or THEN] after the
- expression)
- ENDWHILE - Transfers control to the closest WHILE statement and
- marks the end of the WHILE loop (END WHILE is a synonym)
-
- WRUNET IEXP,SEXP1,SEXP2,SEXP3,SEXP4,SEXP5
- Write information to USERNET.XXX for node IEXP, where SEXP1 is
- the new node status, SEXP2 is the new node user name, SEXP3 is
- the new node city, SEXP4 is the new node operation text, and
- SEXP5 is broadcast text
-
- WRUSYS
- Writes (creates) a USERS.SYS file which can be used by a
- SHELLed application
-
-